package w83b.w83bManager;

import java.util.ArrayList;

import org.apache.commons.lang.StringUtils;

import w83b.w83bBeans.W83bUsuarioXLNetsBean;
import w83b.w83bDAO.W83bFactoriaDAO;
import w83b.w83bDAO.w83bConstantesBD.W83bMotivosBajaActaBD;


public class W83bMotivosBajaActa implements W83bIMotivosBajaActa {
	public java.util.List buscarMotivosBajaActa(w83b.w83bBeans.W83bMotivosBajaActaBean param) throws Exception{
		return W83bFactoriaDAO.getMantenimientosDAO().buscarMotivosBajaActa(param);
			
	}
	
	public String anyadirMotivoBajaActa(w83b.w83bBeans.W83bMotivosBajaActaBean param)
	throws Exception {
		String resultado = "0";
		
		if(StringUtils.isEmpty(param.getCodMotivoBajaActa())){
			String maxMotivoBajaActa = W83bFactoriaDAO.getMantenimientosDAO().maxCodMotivoBajaActa();		
			if(W83bMotivosBajaActaBD.maxCodigo.equals(maxMotivoBajaActa)){
				boolean codEncontrado = false;
				if(Integer.parseInt(maxMotivoBajaActa)+1
						!=Integer.parseInt(W83bFactoriaDAO.getMantenimientosDAO().contarMotivosBajaActa())){
					while(!codEncontrado){
						maxMotivoBajaActa = String.valueOf(Integer.parseInt(maxMotivoBajaActa)-1);//NOPMD
						codEncontrado = !W83bFactoriaDAO.getMantenimientosDAO().existeMotivoBajaActa(maxMotivoBajaActa);
					}
					param.setCodMotivoBajaActa(maxMotivoBajaActa);
					resultado = param.getCodMotivoBajaActa();
					W83bFactoriaDAO.getMantenimientosDAO().anyadirMotivoBajaActa(param);		
				}else{
					resultado = "-1";
				}
			}else{				
				maxMotivoBajaActa = String.valueOf(Integer.parseInt(maxMotivoBajaActa)+1);//NOPMD
				param.setCodMotivoBajaActa(maxMotivoBajaActa);				
				W83bFactoriaDAO.getMantenimientosDAO().anyadirMotivoBajaActa(param);		
			}
		}else {
			if(!W83bFactoriaDAO.getMantenimientosDAO().existeMotivoBajaActa(param.getCodMotivoBajaActa())){	
				W83bFactoriaDAO.getMantenimientosDAO().anyadirMotivoBajaActa(param);		
			}else{
				resultado = "-2";				
			}
		}		
		
		return resultado;
	}
	
	public String modificarMotivoBajaActa(w83b.w83bBeans.W83bMotivosBajaActaBean param)
	throws Exception {
		return  W83bFactoriaDAO.getMantenimientosDAO().modificarMotivoBajaActa(param);		
		
	}
	
	public w83b.w83bBeans.W83bMotivosBajaActaBean detalleMotivoBajaActa(w83b.w83bBeans.W83bMotivosBajaActaBean param) throws  java.lang.Exception, java.rmi.RemoteException {
		
		w83b.w83bBeans.W83bMotivosBajaActaBean mba = W83bFactoriaDAO.getMantenimientosDAO().detalleMotivoBajaActa(param);
		
		return mba;
	}
	
	public java.lang.String comprobarAsociacionMotivosActas(java.util.ArrayList param) 
	throws Exception {
		boolean resultado = true;
		boolean res = true;
		ArrayList borrar=new ArrayList();
		
		W83bUsuarioXLNetsBean userBean = (W83bUsuarioXLNetsBean)param.get(param.size()-1);
		param.remove(param.size()-1);
		
		for(int i=0;i<param.size();i++){
			if (i>0){
				res =  W83bFactoriaDAO.getMantenimientosDAO().existeMotivoActa((String)param.get(i));
				if(!res){
					borrar.add((String)param.get(i));
				}
			}
		}
		if (borrar.size()>0){	
			if (borrar.size()==param.size()-1){
				resultado=false;
			}
			W83bFactoriaDAO.getMantenimientosDAO().borrarMotivoActa(borrar,userBean);
		}
		
		return resultado?"true":"false";
	}


}